<?php
/**
 * function.time.php    时间函数库
 *
 * @author              mashanling(msl-138@163.com)
 * @date                2011-11-24
 * @last modify	        2012-12-01 17:40:56 by mashanling
 */

!defined('ROOT') && exit('Access Denied');

/**
 * 获得当前格林尼治时间的unix时间戳
 *
 * @author       mashanling(msl-138@163.com)
 * @date         2012-09-08 08:54:10
 * @last modify  2012-12-01 17:41:39 by mashanling
 *
 * @param bool $return_app_now_time 是否使用APP_NOW_TIME,默认true，使用
 *
 * @return int 当前格林尼治时间的unix时间戳
 */
function gmtime($return_app_now_time = true) {
    return $return_app_now_time && defined('APP_NOW_TIME') ? APP_NOW_TIME : time() - date('Z');
}

/**
 * 将格林尼治时间的unix时间戳格式化为用户自定义时区的日期
 *
 * @author       mashanling(msl-138@163.com)
 * @date         2012-09-08 08:57:39
 * @last modify  2012-12-01 17:41:50 by mashanling
 *
 * @param string $format    日期格式
 * @param mixed  $time_diff 与格林尼治时间相差秒数
 * @param int    $time      格林尼治时间的unix时间戳
 *
 * @return string 格式化后的用户自定义时区的日期
 */
function local_date($format = null, $time = null, $time_diff = null) {
    $time   = null === $time ? gmtime() : $time;
    $time  += null === $time_diff ? sys_config('sys_timezone_timediff') : $time_diff;
    $format = null === $format ? sys_config('sys_timezone_datetime_format') : $format;

    return date($format, $time);
}

/**
 * 生成一个用户自定义时区日期的格林尼治时间的unix时间戳
 *
 * @author       mashanling(msl-138@163.com)
 * @date         2012-09-08 08:52:26
 * @last modify  2012-09-08 08:52:26 by mashanling
 *
 * @param int $year     年
 * @param int $month    月
 * @param int $day      日
 * @param int $hour     时
 * @param int $minute   分
 * @param int $second   秒

 * @return int 用户自定义时区日期的格林尼治时间的 unix时间戳
 */
function local_mktime($year = null, $month = null, $day = null, $hour = null, $minute = null, $second = null) {
    $time = mktime($hour, $minute, $second, $month, $day, $year) - sys_config('sys_timezone_timediff');

    return $time;
}

/**
 * 将一个用户自定义时区的时间表达式转为格林尼治时间的unix时间戳
 *
 * @author       mashanling(msl-138@163.com)
 * @date         2012-09-08 08:52:08
 * @last modify  2012-09-08 08:52:08 by mashanling
 *
 * @param string $str 日期表达式
 *
 * @return int 用户自定义时区时间表达式的格林尼治时间的unix时间戳
 */
function local_strtotime($str) {
    $time = strtotime($str) - sys_config('sys_timezone_timediff');

    return $time;
}

/**
 * 获取服务器时区
 *
 * @author       mashanling(msl-138@163.com)
 * @date         2012-09-08 08:48:04
 * @last modify  2012-09-08 08:48:04 by mashanling
 *
 * @return string 服务器时区
 */
function server_timezone() {
    return date_default_timezone_get();
}

/**
 * 获得当前时间表达式的格林尼治时间的unix时间戳
 *
 * @author       mashanling(msl-138@163.com)
 * @date         2012-09-08 08:53:28
 * @last modify  2012-09-08 08:53:28 by mashanling
 *
 * @param string $str 日期表达式
 *
 * @return int 当前时间表达式的格林尼治时间的unix时间戳
 */
function str2gmtime($str) {
    $time = strtotime($str);

    return false === $time ? 0 : ($time - date('Z'));
}